package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }
    /***//**///
    //springMVC所有的参数默认都是String类型，根据用户参数的类型，自动实现转化；
//    @RequestMapping(value = "findUserById",method = RequestMethod.GET)请求映射
    @GetMapping("findUserById")
//    @PostMapping("")
//    @PutMapping("")
//    @DeleteMapping("")
    public User findUserById(Integer id) {

        return userService.findUserById(id);
    }//使用自己写的sql及方法实现

    @GetMapping("findUserById1")
    public User findUserById2(Integer id) {
        return userService.findUserById2(id);
    }//调用MP方法实现

    //总结：controller调用的必须是service层的方法，参数传入用户参数
    //service层实现类可以调用自己的方法，自己写sql实现，也可以调用MP的方法实现，但是传入参数需要和controller一致
    @GetMapping("findByNameSex")
    //MVC利用对象方式接受的底层实现：拿到name=×××的参数，底层自动拼接字符串set变为setName,
    //再检查对象中是否有setName()方法，如果匹配，则为对象赋值。
    public List<User> findByNameSex(User user){
        return userService.findByNameSex(user);
    }
    @GetMapping("user/{name}/{age}")
    public List<User> findUserByNA(User user){
        return userService.findUserByNA(user);
    }
    /**restFul的写法一*//*
    @GetMapping("user/{name}/{age}")针对名字传参和自定义名字不一致，使用@PathVariable("age") Integer userage
    public List<User> findUserByNA(@PathVariable String name,
                                   @PathVariable Integer age){
        System.out.println(name+age);
        return null;
    }
    */
    @GetMapping("findUserByIds")
    public List<User> findUserByIds(Integer[] ids){
        return userService.findUserByIds(ids);
    }

    }
